package remote{

	
	import entidades.Avaliacao;
	import entidades.Fornecedor;
	import entidades.Pedido;
	
	import mx.collections.ArrayCollection;
	import mx.controls.Alert;
	import mx.rpc.AsyncToken;
	import mx.rpc.Responder;
	import mx.rpc.events.FaultEvent;
	import mx.rpc.remoting.mxml.RemoteObject;
	
	public class FornecedorRemote {
		
		public function setAvaliarFornecedor( result:Function, pedido:Pedido ):void{
			var async:AsyncToken = _remote.setAvaliarFornecedor(pedido);
			async.addResponder( new Responder( result, defaultFaultHandler ) );
		}
		
		public function getAvaliarFornecedor( result:Function ):void{
			var async:AsyncToken = _remote.getAvaliarFornecedor();
			async.addResponder( new Responder( result, defaultFaultHandler ) );
		}		
		
		public function exibirFornecedor( result:Function ):void{
			var async:AsyncToken = _remote.exibirFornecedor();
			async.addResponder( new Responder( result, defaultFaultHandler ) );
		}		
		 
		public function calculaMediaFornecedor( result:Function, aval:Avaliacao ):void{
			var async:AsyncToken = _remote.calculaMediaFornecedor(aval);
			async.addResponder( new Responder( result, defaultFaultHandler ) );
		}
		
		public function buscarFornecedor(result:Function, numFornecedor:Number, razaoSocial:String, nomeFantasia:String, email:String, itens:ArrayCollection):void{
			var result:Function;
			var async:AsyncToken = _remote.buscarFornecedor(numFornecedor, razaoSocial, nomeFantasia, email, itens);
			async.addResponder( new Responder( result, defaultFaultHandler ) );
		}
		
		public function gravarFornecedor(forn:Fornecedor ):void{
			var result:Function;
			var async:AsyncToken = _remote.gravarFornecedor(forn);
			async.addResponder( new Responder( result, defaultFaultHandler ) );
		}
		
		public function gravarAvaliacao(avaliacao:Avaliacao, result:Function):void{
			var result:Function;
			var async:AsyncToken = _remote.addAvaliacao(avaliacao);
			async.addResponder( new Responder( result, defaultFaultHandler ) );
		}
		
		//--------------------setup----------------------------//
		private var _remote:RemoteObject;
		
		public function FornecedorRemote(){
			_remote = new RemoteObject();
			_remote.showBusyCursor = true;
			_remote.destination = 'FornecedorService';
		}
		
		private function defaultFaultHandler(e:FaultEvent):void{
			Alert.show( "Estamos com problemas no servidor! Tente novamente mais tarde!","Fornecedor" );
		}
		
		private static var _instance:FornecedorRemote;
		public static function getInstance():FornecedorRemote{
			if(_instance == null){
				_instance = new FornecedorRemote();
			}
			return _instance;
		}
	}
}